// JavaScript Document
/*
这个脚本控制音频相关功能，如果不需要异步音频功能则无需加载此脚本。

                                      Noah～～
									  文档最后修改日期：2011-03-03
*/




function change_audio(audio_name)
{
	show_state("音轨加载中");
  audio_string="<audio id=\"audio\" ><source id=\"audio_h264_source\" src="+audio_name+".mp3></source><source id=\"audio_oga_source\" src="+audio_name+".oga></source></audio>";
  document.getElementById(html5_player_audio_change_place).innerHTML=audio_string;//直接更换SRC路径无效，采用整个audio替换方法
  reset_audio_volume();
  //sync_volume() 未能解决同步时状态覆盖显示音轨加载的信息

}
function sync_volume()//同步音量
{
  var volume_now=1;
  volume_now=document.getElementById(html5_player_audio_id).volume;
  if(document.getElementById(html5_player_video_id).muted==false)
  {
    show_state("恢复音量");
  }
  else
  {
    show_state("静音");
  }
  if(volume_now>document.getElementById(html5_player_video_id).volume)
  {
    show_state("音量 -");
  }
  else if(volume_now<document.getElementById(html5_player_video_id).volume)
  {
    show_state("音量 +");
  }
  else
  {
    ;
  }
  document.getElementById(html5_player_audio_id).volume=document.getElementById(html5_player_video_id).volume;
  document.getElementById(html5_player_audio_id).muted=document.getElementById(html5_player_video_id).muted;
}
function show_state(state_text)
{
  if(document.getElementById(html5_player_state_place_id).innerHTML!=state_text)
  {
    document.getElementById(html5_player_state_place_id).innerHTML=state_text;	
  }
}
function sync_time()//同步音频，视频时间差
{
  var sync_chk_time=Math.abs(parseFloat((document.getElementById(html5_player_video_id).currentTime-document.getElementById(html5_player_audio_id).currentTime))).toFixed(2);//检测当前误差值
  if(sync_chk_time>html5_player_audio_sync_time_allow && document.getElementById(html5_player_audio_id).readyState>2)//在readystate>2，也就是音频处于可用状态时进行同步
  {
	  show_state("音轨同步中");
    document.getElementById(html5_player_audio_id).currentTime=document.getElementById(html5_player_video_id).currentTime;//这个同步音频的精确时间值仍需要经过多次测试
    sync_state();//检测同步状态并执行同步动作
  }
  else if(document.getElementById(html5_player_audio_id).readyState<3)
  {
	show_state("音轨缓冲中");
  }
  else
  {
    if(document.getElementById(html5_player_video_id).paused==false)
    {show_state("播放");}
    else
    {show_state("暂停");}
  }
}
function sync_state()//根据同步状态设定音频动作
{
  if(document.getElementById(html5_player_video_id).readyState<3)//音频未准备好，暂停
  {
    document.getElementById(html5_player_audio_id).pause()
  }
  else if(document.getElementById(html5_player_audio_id).readyState<3)
  {
	  show_state("音轨缓冲中");
    document.getElementById(html5_player_audio_id).pause()
  }
  else//音频已准备好，根据当前视频状态设定动作
  {
    if(document.getElementById(html5_player_video_id).paused==false)
    {
		show_state("播放");
      document.getElementById(html5_player_audio_id).play();
    }
    else
    {
		show_state("暂停");
      document.getElementById(html5_player_audio_id).pause();
    }
  }
}

function set_sync_time(time)//设定新的同步时间
{
	html5_player_audio_sync_time_allow=chk_is_num(time);
	
	  function chk_is_num(chk_in)
  {
	  chk_in=parseFloat(chk_in)
	if(isNaN(chk_in)||chk_in==null||chk_in<0.1)
	{alert("时间必须为正数并且大于0.1");}
	else
	{return chk_in;}
  }
}

function show_sync_time()
{
		//var temp=document.getElementById(html5_player_video_id)
		 var audio_time_string="当前音频视频误差为：";
		 audio_time_string+=Math.abs(parseFloat((document.getElementById(html5_player_video_id).currentTime-document.getElementById(html5_player_audio_id).currentTime))).toFixed(2);
		 audio_time_string+="秒<br>*将误差时间设大可以减少音频同步的几率，但是会导致较大的音频延迟，如果您的配置较低可以适当调大该值；误差值设小可以使视频音频同步更精确，但是会使同步几率增加*<br>";
		 audio_time_string+="设置误差值：";
		 audio_time_string+="<input name=\"textfield\" type=\"text\" id=\"new_audio_sync_time\" size=\"3\" value=\""+html5_player_audio_sync_time_allow+"\"/>";
		 audio_time_string+="<input type=\"button\" name=\"button\" value=\"保存\" onclick=\"set_sync_time(document.getElementById('new_audio_sync_time').value)\"/>";
		 document.getElementById(html5_player_audio_information_id).innerHTML=audio_time_string;
		 
}

function reset_audio_volume()//重置音量设置
{
  document.getElementById(html5_player_video_id).muted=false;
  document.getElementById(html5_player_video_id).volume=1;	
}

function reg_audio_events(video_id)//绑定事件
{
 document.getElementById(video_id).addEventListener("volumechange",sync_volume,false);
 document.getElementById(video_id).addEventListener("timeupdate",sync_time,false);
 document.getElementById(video_id).addEventListener("play",sync_state,false);
 document.getElementById(video_id).addEventListener("pause",sync_state,false);
}

reg_audio_events(html5_player_video_id);//绑定到需要同步的VIDEO
